#ifndef _H_S_LOG_CHANNEL_UID_H_
#define _H_S_LOG_CHANNEL_UID_H_

#include "../typedefine.h"

namespace QWER
{
	QTEMPLATE<typename T> QCLASS CService;
	QCLASS CLogServiceFrontend;

	QDLL_EXPORT QSTRUCT SLogChannelUID
	{
	public:
#ifndef _USING_CLI
		SLogChannelUID(){}
#endif
		SLogChannelUID(UINT64 qwUID, PTR(CService<PTR_OR_VAL(CLogServiceFrontend)>) poService)
		{
			m_qwUID = qwUID;
			m_poService = poService;
		}
        inline UINT64 ToUINT64() QCONST_FUNC { return m_qwUID; }
		inline PTR(CService<PTR_OR_VAL(CLogServiceFrontend)>) GetService() { return m_poService; }
		inline BOOLN IsNull() QCONST_FUNC { return m_qwUID == 0; }

	private:
		QINIT_ONLY UINT64 STRUCT_MEMBER_DEFINE(m_qwUID, 0);
		QINIT_ONLY PTR(CService<PTR_OR_VAL(CLogServiceFrontend)>) STRUCT_MEMBER_DEFINE(m_poService, NULL_PTR);
	};
}

#endif
